<!--
      // 1 日期 YYYY-mm-dd
      // 2 日期+时分 YYYY-mm-dd HH:MM
      // 3 日期+时分秒 YYYY-mm-dd HH:MM:SS
      // 4 日期(无年) mm-dd
      // 5 时分 HH:MM
      // 6 时分秒 HH:MM:SS
      // 7 星期 此处与前六个处理方式不一致 故需额外传递参数区分
-->
<template>
    <div class="mc-time" v-bind="$attrs" v-on="$listeners">
      {{ mcDatetime }}
    </div>
</template>

<script>
export default {
  name: 'mc-time',
  data () {
    return {
      mcTimer: '',
      mcDatetime: '',
      dateWeek: [
        {id:0,name: '星期天'},
        {id:1,name: '星期一'},
        {id:2,name: '星期二'},
        {id:3,name: '星期三'},
        {id:4,name: '星期四'},
        {id:5,name: '星期五'},
        {id:6,name: '星期六'},
      ]
    }
  },
  props:{
      //当前行数据
      'mcTimev':{type:String,default:null},
  },
  watch:{

  },
  created() {
  },
  computed:{

  },
  mounted () {
    var _this = this
    this.mcDatetime = this.dateFormat(this.mcTimev||'YYYY-mm-dd HH:MM:SS', new Date());
    /* 每秒定时刷新 */
    this.mcTimer = setInterval(() => {
      let date = new Date()
      // 如果传入 timeType 不等于 7 直接使用格式化
      if (_this.mcTimev == 'day'){
        _this.dealDay(_this.dateFormat("D", date))
      }else {
        _this.mcDatetime = _this.dateFormat(_this.mcTimev, date)
      }
    }, 1000);
    if(window.iframeUi){
      window._mcCacheIntervals.push(this.mcTimer)
    }
  },
  beforeDestroy() {
    /* 离开页面前销毁定时器 */
    if(this.mcTimer){
      clearInterval(this.mcTimer);
    }
  },
  methods:{
    dealDay(num){
     this.mcDatetime = this.dateWeek.filter(item => (Number(item.id) == Number(num)))[0].name
    },
    dateFormat(fmt, date) {
      let ret;
      const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString(),          // 秒
        // 有其他格式化字符需求可以继续添加，必须转化成字符串
        "D+": date.getDay().toString()          // 星期几 返回星期，返回的是0-6的数字，0 表示星期天
      };
      for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
          fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
      };
      return fmt;
    }

  }
}
</script>

<style lang="scss">

</style>
